package cn.kgc.springboot.controller;

import cn.hutool.captcha.LineCaptcha;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;

/**
 * @author: mosin
 * @version: v1.0  2022/7/27
 *    @CrossOrigin
 *    1.该注解 既可以添加在类上 也可以添加在方法上
 *    2.添加在类上 在本类中所有的方法 均可以跨域访问
 *    3.加在方法上 只对当前方法开放跨域访问
 *
 */
@RestController
@RequestMapping("user")
//@CrossOrigin  // 在后台解决资源跨域共享
public class UserController {

    @Autowired
    private StringRedisTemplate stringRedisTemplate;


    //@CrossOrigin
    @GetMapping("code")
    public Map  getCode(){
        HashMap<String, Object> map = new HashMap<>();
        LineCaptcha lineCaptcha = new LineCaptcha(260, 100, 4, 5);
        String code = lineCaptcha.getCode();
        // 将验证码保存在 redis数据库
        stringRedisTemplate.opsForValue().set("code", code, 60, TimeUnit.SECONDS);

        map.put("code", code);
        return  map;
    }


    @GetMapping("login")
    public Map login(String code,String username,String password){

        HashMap<String, Object> map = new HashMap<>();
        // 判定验证码  1. 从redis中获取验证码  2. 比较
        String redisCode = stringRedisTemplate.opsForValue().get("code");
        if(null==redisCode){
            map.put("code", 500);
            map.put("msg", "验证码已失效，请刷新！！");
        }else{
            // 2. 比较
            if(redisCode.equals(code)){
                map.put("code", 200);
                map.put("msg", "验证码正确");
            }else {
                map.put("code", 500);
                map.put("msg", "验证码错误");

            }

        }
        return  map;
    }


}
